﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;

namespace mrp16062010.Veri
{
    class Cizelge:ConnectionImporter
    {
        private int cizelgeId;

        public int CizelgeId
        {
            get { return cizelgeId; }
            set { cizelgeId = value; }
        }

        private IsMerkezi isMerkezi;

        public IsMerkezi _IsMerkezi
        {
            get { return isMerkezi; }
            set { isMerkezi = value; }
        }
        

        private DateTime baslangicTarihi;

        public DateTime BaslangicTarihi
        {
            get { return baslangicTarihi; }
            set { baslangicTarihi = value; }
        }

        private DateTime bitisTarihi;

        public DateTime BitisTarihi
        {
            get { return bitisTarihi; }
            set { bitisTarihi = value; }
        }

        private OperasyonTanim operasyon;

        public OperasyonTanim Operasyon
        {
            get { return operasyon; }
            set { operasyon = value; }
        }

        private Stok olusanStok;

        public Stok OlusanStok
        {
            get { return olusanStok; }
            set { olusanStok = value; }
        }

        private Siparis siparis;

        public Siparis _Siparis
        {
            get { return siparis; }
            set { siparis = value; }
        }

        private RotaTanim rotaTanim;

        public RotaTanim RotaTanim
        {
            get { return rotaTanim; }
            set { rotaTanim = value; }
        }

        private bool kabulMu=false;

        public bool KabulMu
        {
            get { return kabulMu; }
            set { kabulMu = value; }
        }

        private bool tatilMi = false;

        public bool TatilMi
        {
            get { return tatilMi; }
            set { tatilMi = value; }
        }

        public void Kaydet()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("InsertCizelge", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmReturnValue = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
            prmReturnValue.Direction = ParameterDirection.ReturnValue;

            SqlParameter prmIsMerkeziId = cmd.Parameters.Add("@IsMerkeziId", SqlDbType.Int);
            prmIsMerkeziId.Direction = ParameterDirection.Input;
            if (isMerkezi!=null)
            {
                prmIsMerkeziId.Value = this.isMerkezi.IsMerkeziId;
            }

            SqlParameter prmBaslangicTarihi = cmd.Parameters.Add("@BaslangicTarihi", SqlDbType.DateTime);
            prmBaslangicTarihi.Direction = ParameterDirection.Input;
            if (baslangicTarihi!=null)
            {
                prmBaslangicTarihi.Value = this.baslangicTarihi;
            }

            SqlParameter prmBitisTarihi = cmd.Parameters.Add("@BitisTarihi", SqlDbType.DateTime);
            prmBitisTarihi.Direction = ParameterDirection.Input;
            if (bitisTarihi != null)
            {
                prmBitisTarihi.Value = this.bitisTarihi;
            }

            SqlParameter prmOperasyonId = cmd.Parameters.Add("@OperasyonId", SqlDbType.Int);
            prmOperasyonId.Direction = ParameterDirection.Input;
            if (operasyon!=null)
            {
                prmOperasyonId.Value = this.operasyon.OperasyonTanimId;
            }

            SqlParameter prmOlusanStokId = cmd.Parameters.Add("@OlusanStokId", SqlDbType.Int);
            prmOlusanStokId.Direction = ParameterDirection.Input;
            if (olusanStok!=null)
            {
                prmOlusanStokId.Value = this.olusanStok.StokId;
            }

            SqlParameter prmSiparisId = cmd.Parameters.Add("@SiparisId", SqlDbType.Int);
            prmSiparisId.Direction = ParameterDirection.Input;
            if (siparis!=null)
            {
                prmSiparisId.Value = this.siparis.SiparisId;
            }

            SqlParameter prmRotaTanimId = cmd.Parameters.Add("@RotaTanimId", SqlDbType.Int);
            prmRotaTanimId.Direction = ParameterDirection.Input;
            if (rotaTanim!=null)
            {
                prmRotaTanimId.Value = this.rotaTanim.RotaTanimId;
            }

            SqlParameter prmKabulMu = cmd.Parameters.Add("@KabulMu", SqlDbType.TinyInt);
            prmKabulMu.Direction = ParameterDirection.Input;
            prmKabulMu.Value = this.KabulMu;

            SqlParameter prmTatilMi = cmd.Parameters.Add("@TatilMi", SqlDbType.TinyInt);
            prmTatilMi.Direction = ParameterDirection.Input;
            prmTatilMi.Value = this.TatilMi;

            SqlParameter prmCizelgeId = cmd.Parameters.Add("@CizelgeId", SqlDbType.Int);
            prmCizelgeId.Direction = ParameterDirection.Output;
            prmCizelgeId.Value = this.CizelgeId;
            
            cmd.ExecuteNonQuery();
            cmd.Dispose();
            Disconnect();
        }

        public void Sil()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("DeleteCizelge", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmCizelgeId = cmd.Parameters.Add("@CizelgeId", SqlDbType.Int);
            prmCizelgeId.Direction = ParameterDirection.Input;
            prmCizelgeId.Value = this.CizelgeId;
            cmd.ExecuteNonQuery();
            cmd.Dispose();
            Disconnect();
        }

        public void Guncelle()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("UpdateCizelge", Connection);
            cmd.CommandType = CommandType.StoredProcedure;

            #region Populate Parameters
            SqlParameter prmReturnValue = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
            prmReturnValue.Direction = ParameterDirection.ReturnValue;

            SqlParameter prmCizelgeId = cmd.Parameters.Add("@CizelgeId", SqlDbType.Int);
            prmCizelgeId.Direction = ParameterDirection.Input;

            prmCizelgeId.Value = this.CizelgeId;


            SqlParameter prmIsMerkeziId = cmd.Parameters.Add("@IsMerkeziId", SqlDbType.Int);
            prmIsMerkeziId.Direction = ParameterDirection.Input;

            prmIsMerkeziId.Value = this._IsMerkezi.IsMerkeziId;


            SqlParameter prmBaslangicTarihi = cmd.Parameters.Add("@BaslangicTarihi", SqlDbType.DateTime);
            prmBaslangicTarihi.Direction = ParameterDirection.Input;

            prmBaslangicTarihi.Value = this.BaslangicTarihi;


            SqlParameter prmBitisTarihi = cmd.Parameters.Add("@BitisTarihi", SqlDbType.DateTime);
            prmBitisTarihi.Direction = ParameterDirection.Input;

            prmBitisTarihi.Value = this.BitisTarihi;


            SqlParameter prmOperasyonId = cmd.Parameters.Add("@OperasyonId", SqlDbType.Int);
            prmOperasyonId.Direction = ParameterDirection.Input;

            prmOperasyonId.Value = this.Operasyon.OperasyonTanimId;


            SqlParameter prmOlusanStokId = cmd.Parameters.Add("@OlusanStokId", SqlDbType.Int);
            prmOlusanStokId.Direction = ParameterDirection.Input;

            prmOlusanStokId.Value = this.OlusanStok.StokId;


            SqlParameter prmSiparisId = cmd.Parameters.Add("@SiparisId", SqlDbType.Int);
            prmSiparisId.Direction = ParameterDirection.Input;

            prmSiparisId.Value = this._Siparis.SiparisId;


            SqlParameter prmRotaTanimId = cmd.Parameters.Add("@RotaTanimId", SqlDbType.Int);
            prmRotaTanimId.Direction = ParameterDirection.Input;

            prmRotaTanimId.Value = this.RotaTanim.RotaTanimId;


            SqlParameter prmKabulMu = cmd.Parameters.Add("@KabulMu", SqlDbType.TinyInt);
            prmKabulMu.Direction = ParameterDirection.Input;

            prmKabulMu.Value = this.KabulMu;


            SqlParameter prmTatilMi = cmd.Parameters.Add("@TatilMi", SqlDbType.TinyInt);
            prmTatilMi.Direction = ParameterDirection.Input;

            prmTatilMi.Value = this.TatilMi;

            #endregion

            cmd.ExecuteNonQuery();
            cmd.Dispose();
            Disconnect();
        }

        public void Bul()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("SelectCizelge", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmCizelgeId = cmd.Parameters.Add("@CizelgeId", SqlDbType.Int);
            prmCizelgeId.Direction = ParameterDirection.Input;
            prmCizelgeId.Value = this.CizelgeId;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);

            foreach (DataRow row in dt.Rows)
            {
                this.cizelgeId = int.Parse(row["CizelgeId"].ToString());
                //this.isMerkezi = new IsMerkezi().;
                this.baslangicTarihi = DateTime.Parse(row["BaslangicTarihi"].ToString());
                this.bitisTarihi = DateTime.Parse(row["BitisTarihi"].ToString());
                //this.operasyon=
                //this.OlusanStok=
                //this.siparis=
                //this.rotaTanim=
                this.kabulMu = bool.Parse(row["KabulMu"].ToString());
                this.tatilMi = bool.Parse(row["TatilMi"].ToString());

                break;
            }
            
            cmd.Dispose();
            Disconnect();
        }

        public List<Cizelge> Listele()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("SelectCizelgesAll", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            List<Cizelge> liste = new List<Cizelge>();

            foreach (DataRow row in dt.Rows)
            {
                Cizelge ciz = new Cizelge();
                ciz.cizelgeId = int.Parse(row["CizelgeId"].ToString());
                //ciz.isMerkezi = new IsMerkezi().;
                ciz.baslangicTarihi = DateTime.Parse(row["BaslangicTarihi"].ToString());
                ciz.bitisTarihi = DateTime.Parse(row["BitisTarihi"].ToString());
                //ciz.operasyon=
                //ciz.OlusanStok=
                //ciz.siparis=
                //ciz.rotaTanim=
                ciz.kabulMu = bool.Parse(row["KabulMu"].ToString());
                ciz.tatilMi = bool.Parse(row["TatilMi"].ToString());
                liste.Add(ciz);
            }

            cmd.Dispose();
            Disconnect();
            return liste;
        }
        
    }
}
